# Create your views here.
# -*- coding: utf-8 -*-

from django.views.generic.list_detail import object_list, object_detail
from wal.pedidos.models import Pedido, DetallePedido
from wal.pedidos.views import obtenerPedido, obtenerDetallePedido
from wal.control.models import Control, DetalleControl, Evaluacion, Accion, Stock
from wal.control.forms import ControlForm, DetalleControlForm, EvaluacionForm, AccionForm, StockForm, PesoForm, FechaForm
from wal.pedidos.forms import SearchForm
from django.template.context import RequestContext
from django.shortcuts import render_to_response
#from wal.views import update_object, create_object , delete_object
from django.views.generic.create_update import update_object, create_object , delete_object
from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
import datetime
from wal.views import split_query_into_keywords, corregirEstado

def obtenerControl(request,object_id):
    if int(object_id):
        try:
            objectoControl = Control.objects.get(id=object_id)
        except ObjectDoesNotExist:
            return 'No existe el objecto'
    else:
        return 'No existe el objecto'
    return objectoControl

def obtenerDetalleControl(request,object_id):
    if int(object_id):
        try:
            objectoDetalle = DetalleControl.objects.get(id=object_id)
        except ObjectDoesNotExist:
            return 'No existe el objecto'
    else:
        return 'No existe el objecto'
    return objectoDetalle

def obtenerEval(request,object_id):
    if int(object_id):
        try:
            objectoEval = Evaluacion.objects.get(id=object_id)
        except ObjectDoesNotExist:
            return 'No existe el objecto'
    else:
        return 'No existe el objecto'
    return objectoEval

def obtenerAccion(request,object_id):
    if int(object_id):
        try:
            objectoAccion = Accion.objects.get(id=object_id)
        except ObjectDoesNotExist:
            return 'No existe el objecto'
    else:
        return 'No existe el objecto'
    return objectoAccion

def search_for_keywords(keywords):
    """Make a search that contains all of the keywords."""
    controles = Control.objects.all()
    for keyword in keywords:
        controles = controles.filter(nombre__icontains=keyword)
    return controles

def listar(request,object_id,ot,o,page):
    #list = Control.objects.filter(pedido=object_id).order_by("-fecha")
    pedido = obtenerPedido(request, object_id)
    if pedido == 'No existe el objecto':
        return render_to_response('error.html',{'error':'No existe el objecto'})
    
    request.breadcrumbs([('Pedidos','/wal/pedidos/listar/ot=asc&o=3&page=1'),(pedido.nombre,'/wal/pedidos/ver/'+str(pedido.id)),('Controles de Calidad',request.path)])
    
    if ot=='asc':
        if int(o) == 1:
            orden = "-nombre"
        elif int(o) == 2:
            orden = "-fecha"
        elif int(o) == 3:
            orden = "-responsable"
        else:
            orden = "-nombre"
    elif ot=='desc':
        if int(o) == 1:
            orden = "nombre"
        elif int(o) == 2:
            orden = "fecha"
        elif int(o) == 3:
            orden = "responsable"
        else:
            orden = "nombre"
    else:
        orden = "-nombre"
    if request.method == 'GET':
        form = SearchForm(request.GET)
        if form.is_valid():
            keywords = form.cleaned_data['keywords']
            keyword_list = split_query_into_keywords(keywords)
            controles = search_for_keywords(keyword_list)
            if controles:
                # Show the results
                qs = controles.order_by(orden)
            else:
                qs = Control.objects.none()
            form = SearchForm()
            return object_list(request,
                   queryset = qs,
                   allow_empty = True,
                   template_name = 'control/listar.html',
                   extra_context = {'ot':ot,'o':o,'page':page,'form':form,'pedido': object_id},
                   paginate_by = 20,
                   page = page,
                   )
    else:
        form = SearchForm()
    return object_list(request,
                       queryset = Control.objects.filter(pedido=object_id).order_by(orden),
                       allow_empty = True,
                       template_name = 'control/listar.html',
                       extra_context = {'ot':ot,'o':o,'page':page,'pedido': object_id,'form':form},
                       paginate_by = 20,
                       page = page,
                       )
    #return render_to_response('control/listar.html', {'pedido': object_id, 'object_list': list}, context_instance=RequestContext(request))
#    return object_list(request,
#                       queryset = Control.objects.filter(pedido=object_id).order_by("-fecha"),
#                       allow_empty = True,
#                       template_name = 'control/listar.html'
#                       )
    
def ver(request, object_id):
    control = obtenerControl(request, object_id)
    if control == 'No existe el objecto':
        return render_to_response('error.html',{'error':'No existe el objecto'})
    el_pedido = control.pedido
    
    request.breadcrumbs([('Pedidos','/wal/pedidos/listar/ot=asc&o=3&page=1'),(el_pedido.nombre,'/wal/pedidos/ver/'+str(el_pedido.id)),('Controles de Calidad',reverse(listar,args=[el_pedido.id,'asc',1,1])),(control.nombre,request.path)])
    
    if request.method == "POST":
        cforms = DetalleControlForm(el_pedido,request.POST, instance=DetalleControl())
#        cforms = DetalleControlForm(request.POST, instance=DetalleControl())
        if cforms.is_valid():
            new_detalle = cforms.save(commit=False)
            new_detalle.proceso = el_pedido.proceso
            pcant = 0
            cleaned_data = super(DetalleControlForm, cforms).clean()
            cant = cleaned_data.get("cantidad")
            ped_det = DetallePedido.objects.filter(pedido=el_pedido,articulo=new_detalle.articulo,proceso=new_detalle.proceso)
            if ped_det:
                d = DetallePedido.objects.get(pedido=el_pedido,articulo=new_detalle.articulo,proceso=new_detalle.proceso)
                pcant = d.cantidad
#            else:
#                new_detalle.observacion = "Este artículo no estaba originalmente en el pedido.    "+new_detalle.observacion
            stock = Stock.objects.filter(pedido=el_pedido,articulo=new_detalle.articulo,proceso=new_detalle.proceso)
            if stock:
                stock = Stock.objects.get(pedido=el_pedido,articulo=new_detalle.articulo,proceso=new_detalle.proceso)
                scant = pcant - stock.procesado
            else:
                scant = 100000000
            if cant > pcant or cant > scant:
                #raise forms.ValidationError("Las Fechas están mal!")
                msg = u"La Cantidad está mal!"
                cforms._errors["cantidad"] = cforms.error_class([msg])
        
                # These fields are no longer valid. Remove them from the
                # cleaned data.
                del cleaned_data["cantidad"]
#                new_detalle.observacion = "Existe algun problema con las cantidades.    "+new_detalle.observacion
            else:
                new_det = DetalleControl.objects.filter(control=control,articulo=new_detalle.articulo,proceso=new_detalle.proceso,conformidad='C',nuevo='S')
                if new_det and new_detalle.conformidad == 'C':
                    new_det = DetalleControl.objects.get(control=control,articulo=new_detalle.articulo,proceso=new_detalle.proceso,conformidad='C',nuevo='S')
                    new_det.peso = (new_det.peso*new_det.cantidad + new_detalle.peso*new_detalle.cantidad)/(new_det.cantidad+new_detalle.cantidad)
                    new_det.cantidad = new_det.cantidad + new_detalle.cantidad
                    new_det.muestras = new_det.muestras + new_detalle.muestras
                    new_det.save()
                    det = obtenerDetalleControl(request, new_det.id)
                    if det == 'No existe el objecto':
                        return render_to_response('error.html',{'error':'No existe el objecto'})
                    
                else:
                    new_detalle.control = control
                    new_detalle.save()
                    det = obtenerDetalleControl(request, new_detalle.id)
                    if det == 'No existe el objecto':
                        return render_to_response('error.html',{'error':'No existe el objecto'})
                    
                if det.conformidad == 'C':
#                        return HttpResponseRedirect(reverse(crearStock, args=[det.id,new_detalle.cantidad,new_detalle.peso]))
                    control.unidades = control.unidades + new_detalle.cantidad
                    control.kgreal = control.kgreal + new_detalle.cantidad*new_detalle.peso
                    control.kgproc = control.kgproc + new_detalle.cantidad*new_detalle.peso*det.porcentaje
                    control.save()
                    return crearStock(request,det.id,new_detalle.cantidad,new_detalle.peso)
                else:
                    if stock:
                        stock.procesado = stock.procesado + new_detalle.cantidad
                        stock.save()
                    else:
                        new_stock = Stock(pedido=el_pedido,articulo=new_detalle.articulo,proceso=new_detalle.proceso,cantidad=pcant,procesado=new_detalle.cantidad,stock=0,despachado=0)
                        new_stock.save()
                    return HttpResponseRedirect(reverse(crearEval, args=[det.id]))
    else:
        cforms = DetalleControlForm(el_pedido,instance=DetalleControl())
#        cforms = DetalleControlForm(instance=DetalleControl())
    detalles = Control.objects.filter(fecha = control.fecha,pedido__proceso = el_pedido.proceso)
    uni = 0
    proc = 0
    real = 0
    if detalles:
        for detalle in detalles:
            uni = uni + detalle.unidades
            proc = proc + detalle.kgproc
            real = real + detalle.kgreal
        
        
    detalle = DetalleControl.objects.filter(control=object_id)
    list = []
    ptotal = 0
    for item in detalle:
        list.append(item)
        if item.conformidad == 'C':
            ptotal = ptotal + item.peso*item.cantidad
    return render_to_response('control/detalles.html', {'control': control, 'detalle': list, 'detalle_forms': cforms, 'pedido': el_pedido, 'ptotal': ptotal, 'uni': uni, 'proc': proc, 'real': real}, context_instance=RequestContext(request))

def crear(request,object_id):
    pedido = obtenerPedido(request, object_id)
    if pedido == 'No existe el objecto':
        return render_to_response('error.html',{'error':'No existe el objecto'})
    
    request.breadcrumbs([('Pedidos','/wal/pedidos/listar/ot=asc&o=3&page=1'),(pedido.nombre,'/wal/pedidos/ver/'+str(pedido.id)),('Controles de Calidad',reverse(listar,args=[object_id,'asc',1,1])),('Crear Control de Calidad',request.path)])
    
    if request.method == "POST":
        pform = ControlForm(request.POST, instance=Control())
        if pform.is_valid():
            new_control = pform.save(commit=False)
            new_control.pedido = pedido
            new_control.cliente = pedido.cliente
            cleaned_data = super(ControlForm, pform).clean()
            fecha = cleaned_data.get("fecha")
            pfecha = pedido.fecha
            pplazo = pedido.plazo
            if fecha < pfecha:
                #raise forms.ValidationError("Las Fechas están mal!")
                msg = u"La Fecha está mal!"
                pform._errors["fecha"] = pform.error_class([msg])
        
                # These fields are no longer valid. Remove them from the
                # cleaned data.
                del cleaned_data["fecha"]
            else:
                if fecha > pplazo:
#                    pedido.finalizado = 'M'
#                    pedido.save()
                    a = corregirEstado(request,pedido,pedido.fecha,pedido.plazo)
                new_control.save()
                return HttpResponseRedirect(reverse(ver, args=[new_control.id]))
    else:
        pform = ControlForm(instance=Control())
    return render_to_response('control/control.html', {'form': pform, 'pedido':object_id}, context_instance=RequestContext(request))

def editar(request, object_id):
    control = obtenerControl(request, object_id)
    if control == 'No existe el objecto':
        return render_to_response('error.html',{'error':'No existe el objecto'})

    pedido = control.pedido

    request.breadcrumbs([('Pedidos','/wal/pedidos/listar/ot=asc&o=3&page=1'),(pedido.nombre,'/wal/pedidos/ver/'+str(pedido.id)),('Controles de Calidad',reverse(listar,args=[pedido.id,'asc',1,1])),('Editar '+control.nombre,request.path)])

    return update_object(request,
                        model = Control, 
                        #form_class = PedidosForm,
                        template_name = 'control/control.html', 
                        post_save_redirect = reverse(ver,args=[object_id]),
                        object_id = object_id,
                        form_class = ControlForm
                        )
    
def borrar(request, object_id,ot,o,page):
    control = obtenerControl(request, object_id)
    if control == 'No existe el objecto':
        return render_to_response('error.html',{'error':'No existe el objecto'})
    pedido = control.pedido
    if request.method == "POST":
        for detalle in DetalleControl.objects.filter(control=control):
            stock = Stock.objects.filter(pedido=pedido,articulo=detalle.articulo,proceso=detalle.proceso)
            if stock:
                st = Stock.objects.get(pedido=pedido,articulo=detalle.articulo,proceso=detalle.proceso)
                if detalle.conformidad == 'C':
                    st.stock = st.stock - detalle.cantidad
                    if st.peso != detalle.peso:
                        st.peso = (st.peso*2) - detalle.peso  #aca se agrego algo referente a la correccion del peso
                    else:
                        st.peso = None
                else:
                    d = DetalleControl.objects.filter(control=control,articulo=detalle.articulo,proceso=detalle.proceso,cantidad=detalle.cantidad,muestras=detalle.muestras,conformidad='C',nuevo='N')
                    if d:
                        for p in d:
                            pd = p
                            break
                        peso = pd.peso
                        pd.delete()
                        st.stock = st.stock - detalle.cantidad
                        if st.peso != peso:
                            st.peso = (st.peso*2) - peso   #aca se agrego algo referente a la correccion del peso
                        else:
                            st.peso = None
                st.procesado = st.procesado - detalle.cantidad
                st.save()
    return delete_object(request,
                         model = Control, 
                         template_name = 'control/confirm_delete_control.html', 
                         post_delete_redirect = reverse(listar, args=[pedido.id,ot,o,page]),
                         object_id = object_id
                         )
    
def borrarDetalle(request, object_id):
    detalle = obtenerDetalleControl(request, object_id)
    if detalle == 'No existe el objecto':
        return render_to_response('error.html',{'error':'No existe el objecto'})
    control = detalle.control
    pedido = control.pedido
    if request.method == "POST":
        stock = Stock.objects.filter(pedido=pedido,articulo=detalle.articulo,proceso=detalle.proceso)
        if stock:
            st = Stock.objects.get(pedido=pedido,articulo=detalle.articulo,proceso=detalle.proceso)
            if detalle.conformidad == 'C':
                #st.peso = 0
                if st.peso != detalle.peso and st.peso != None and st.stock+st.despachado != detalle.cantidad:
                    st.peso = (st.peso*(st.stock+st.despachado) - detalle.peso*detalle.cantidad)/(st.stock+st.despachado-detalle.cantidad)   #aca se agrego algo referente a la correccion del peso
                else:
                    st.peso = None
                st.stock = st.stock - detalle.cantidad
                    
                control.unidades = control.unidades - detalle.cantidad
                control.kgreal = control.kgreal - detalle.cantidad*detalle.peso
                control.kgproc = control.kgproc - detalle.cantidad*detalle.peso*detalle.porcentaje
                control.save()
            else:
                d = DetalleControl.objects.filter(control=control,articulo=detalle.articulo,proceso=detalle.proceso,cantidad=detalle.cantidad,muestras=detalle.muestras,conformidad='C',nuevo='N')
                if d:
                    for p in d:
                        pd = p
                        break
                    peso = pd.peso
                    pd.delete()
                    #st.peso = 0
                    if st.peso != peso and st.peso != None:
                        st.peso = (st.peso*(st.stock+st.despachado) - peso.detalle.cantidad)/(st.stock+st.despachado-detalle.cantidad)   #aca se agrego algo referente a la correccion del peso
                    else:
                        st.peso = None
                    st.stock = st.stock - detalle.cantidad
            st.procesado = st.procesado - detalle.cantidad
            st.save()
    return delete_object(request,
                         model = DetalleControl, 
                         template_name = 'control/confirm_delete_detalle.html', 
                         post_delete_redirect = reverse(ver, args=[control.id]),
                         object_id = object_id
                         )
    
def borrarAccion(request, object_id):
    accion = obtenerAccion(request, object_id)
    if accion == 'No existe el objecto':
        return render_to_response('error.html',{'error':'No existe el objecto'})
    eval = accion.evaluacion
    det = eval.detalle
    return delete_object(request,
                         model = Accion, 
                         template_name = 'control/confirm_delete_accion.html', 
                         post_delete_redirect = reverse(verEval, args=[det.id]),
                         object_id = object_id
                         )
    
    
def verEval(request, object_id):
    #eval = obtenerEval(request, object_id)
    detalle = obtenerDetalleControl(request, object_id)
    if detalle == 'No existe el objecto':
        return render_to_response('error.html',{'error':'No existe el objecto (verEval)'})
    if Evaluacion.objects.filter(detalle=object_id):
        eval = Evaluacion.objects.get(detalle=object_id)
    control = detalle.control
    pedido = control.pedido
    
    request.breadcrumbs([('Pedidos','/wal/pedidos/listar/ot=asc&o=3&page=1'),(pedido.nombre,'/wal/pedidos/ver/'+str(pedido.id)),('Controles de Calidad',reverse(listar,args=[pedido.id,'asc',1,1])),(control.nombre,reverse(ver,args=[control.id])),('Evaluacion '+eval.nombre,request.path)])
    
    if request.method == "POST":
        cforms = AccionForm(request.POST, instance=Accion())
        if cforms.is_valid():
            new_accion = cforms.save(commit=False)
            new_accion.evaluacion = eval
            new_accion.save()
            return HttpResponseRedirect(reverse(verEval, args=[object_id]))
            
    else:
        cforms = AccionForm(instance=Accion())
    accion = Accion.objects.filter(evaluacion=eval.id)
    list = []
    ban = 'Si'
    if not accion:
        ban = 'No'
    for item in accion:
        if item.ec == 'N':
            ban = 'No'
        list.append(item)
    dia = datetime.date.today()
    return render_to_response('control/detallesEval.html', {'eval': eval, 'accion': list, 'hoy': dia,'ban': ban, 'accion_forms': cforms, 'control': control,'pedido': pedido}, context_instance=RequestContext(request))

def borrarEval(request, object_id):
    eval = obtenerEval(request, object_id)
    if eval == 'No existe el objecto':
        return render_to_response('error.html',{'error':'No existe el objecto'})
    detalle = eval.detalle
    control = detalle.control
    return delete_object(request,
                         model = Evaluacion, 
                         template_name = 'control/confirm_delete_eval.html', 
                         post_delete_redirect = reverse(ver, args=[control.id]),
                         object_id = object_id
                         )
    
def crearEval(request,object_id):
    detalle = obtenerDetalleControl(request, object_id)
    if detalle == 'No existe el objecto':
        return render_to_response('error.html',{'error':'No existe el objecto. (crearEval)'})
    control = detalle.control
    if request.method == "POST":
        pform = EvaluacionForm(request.POST, instance=Evaluacion())
        if pform.is_valid():
            new_eval = pform.save(commit=False)
            new_eval.detalle = detalle
            new_eval.save()
            return HttpResponseRedirect(reverse(verEval, args=[object_id]))
    else:
        pform = EvaluacionForm(instance=Evaluacion())
    return render_to_response('control/eval.html', {'form': pform}, context_instance=RequestContext(request))

def confAccion(request,object_id):
    accion = obtenerAccion(request, object_id)
    if accion == 'No existe el objecto':
        return render_to_response('error.html',{'error':'No existe el objecto'})
    accion.conformidad = 'C'
    accion.ec = 'C'
    accion.save()
    eval = accion.evaluacion
    detalle = eval.detalle 
    acciones = Accion.objects.filter(evaluacion=eval)
    for item in acciones:
        if item.ec == 'N':
            return HttpResponseRedirect(reverse(verEval, args=[detalle.id]))
    detalle = eval.detalle
#    new_detalle = DetalleControl(control=detalle.control,articulo=detalle.articulo,proceso=detalle.proceso,cantidad=detalle.cantidad,muestras=detalle.muestras,conformidad='C',observacion='Previamente pasó por un proceso de evaluación por haber estado No Conforme',nuevo='N')
#    new_detalle.save()
    #return HttpResponseRedirect(reverse(crearStock, args=[new_detalle.id]))
    return HttpResponseRedirect(reverse(crearNuevoDetalle, args=[detalle.id]))

def crearNuevoDetalle(request,object_id):
    detalle = obtenerDetalleControl(request, object_id)
    if detalle == 'No existe el objecto':
        return render_to_response('error.html',{'error':'No existe el objecto'})
#    today = datetime.date.today()\
    control = detalle.control
    pedido = control.pedido
    if request.method == "POST":
        pform = FechaForm(request.POST)
        if pform.is_valid():
            cleaned_data = super(FechaForm, pform).clean()
            fecha = cleaned_data.get('fecha')
            con = Control.objects.filter(pedido=pedido,fecha=fecha)
            if con:
                con = Control.objects.get(pedido=pedido,fecha=fecha)
            else:
                con = Control(pedido=pedido,cliente=control.cliente,fecha=fecha,responsable=control.responsable,unidades=0,kgreal=0,kgproc=0)
                con.save()
            new_detalle = DetalleControl(control=con,articulo=detalle.articulo,proceso=detalle.proceso,cantidad=detalle.cantidad,muestras=detalle.muestras,peso=detalle.peso,conformidad='C',observacion='Previamente pasó por un proceso de evaluación por haber estado No Conforme. No conformidad con el lote de la fecha '+str(control.fecha) + '. '+str(detalle.observacion),nuevo='N',porcentaje=detalle.porcentaje)
            new_detalle.save()
            detalle.observacion = 'Conforme con el lote de la fecha '+str(con.fecha) + '. '+str(detalle.observacion)
            detalle.save()
#            return HttpResponseRedirect(reverse(crearStock, args=[new_detalle.id,new_detalle.cantidad,new_detalle.peso]))
            con.unidades = con.unidades + detalle.cantidad
            con.kgreal = con.kgreal + detalle.cantidad*detalle.peso
            con.kgproc = con.kgproc + detalle.cantidad*detalle.peso*detalle.porcentaje
            con.save()  
            
            return crearStock(request,new_detalle.id,new_detalle.cantidad,new_detalle.peso)
    else:
        pform = FechaForm()
    return render_to_response('control/stock.html', {'form': pform}, context_instance=RequestContext(request))
    
    
    
def nconfAccion(request,object_id):
    accion = obtenerAccion(request, object_id)
    if accion == 'No existe el objecto':
        return render_to_response('error.html',{'error':'No existe el objecto'})
    eval = accion.evaluacion
    detalle = eval.detalle
    if request.method == "POST":
        cforms = AccionForm(request.POST, instance=Accion())
        if cforms.is_valid():
            new_accion = cforms.save(commit=False)
            new_accion.evaluacion = eval
            new_accion.save()
            accion.ec = 'C'
            accion.save()
            return HttpResponseRedirect(reverse(verEval, args=[detalle.id]))
            
    else:
        cforms = AccionForm(instance=Accion())
    return render_to_response('control/accion.html', {'eval': eval, 'form': cforms}, context_instance=RequestContext(request))

def repAccion(request,object_id):
    accion = obtenerAccion(request, object_id)
    if accion == 'No existe el objecto':
        return render_to_response('error.html',{'error':'No existe el objecto'})
    eval = accion.evaluacion
    detalle = eval.detalle
    if request.method == "POST":
        cforms = AccionForm(request.POST, instance=Accion())
        if cforms.is_valid():
            new_accion = cforms.save(commit=False)
            new_accion.evaluacion = eval
            new_accion.accion = accion.accion
            new_accion.save()
            accion.ec = 'C'
            accion.reprogramado = 'S'
            accion.save()
            return HttpResponseRedirect(reverse(verEval, args=[detalle.id]))
            
    else:
        cforms = AccionForm(instance=Accion())
    return render_to_response('control/faccion.html', {'eval': eval, 'form': cforms}, context_instance=RequestContext(request))

def crearStock(request,object_id,cantidad,peso):
    detalle = obtenerDetalleControl(request, object_id)
    if detalle == 'No existe el objecto':
        return render_to_response('error.html',{'error':'No existe el objecto'})
    control = detalle.control
    pedido = control.pedido
#    cantidad = detalle.cantidad
    stock = Stock.objects.filter(pedido=pedido,articulo=detalle.articulo,proceso=detalle.proceso)
    ped_det = DetallePedido.objects.filter(pedido=pedido,articulo=detalle.articulo,proceso=detalle.proceso)
    if ped_det:
        d = DetallePedido.objects.get(pedido=pedido,articulo=detalle.articulo,proceso=detalle.proceso)
        pcant = d.cantidad
    if stock:
        st = Stock.objects.get(pedido=pedido,articulo=detalle.articulo,proceso=detalle.proceso)
        if detalle.nuevo == 'S':
            st.procesado = st.procesado + cantidad
        if st.peso:
            st.peso = (st.peso*(st.stock+st.despachado) + peso*cantidad)/(st.stock+st.despachado+cantidad)
        else:
            st.peso = peso
        st.stock = st.stock + cantidad
        st.save()
    else:
        new_stock = Stock(pedido=pedido,articulo=detalle.articulo,proceso=detalle.proceso,cantidad=pcant,peso=peso,procesado=cantidad,stock=cantidad,despachado=0)
        new_stock.save()
        
    return HttpResponseRedirect(reverse(ver, args=[control.id]))
